﻿using System;

namespace octalforty.Syndication.Core
{
    /// <summary>
    /// Represents an exception which occured while syndicating the <see cref="ISyndicationFeed"/>
    /// with <see cref="ISyndicator"/>. The most common reason for the exception to be thrown
    /// is the violation of the specification the <see cref="ISyndicator"/> adheres to.
    /// </summary>
    [Serializable()]
    public class SyndicationException : ApplicationException
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="SyndicationException"/> class.
        /// </summary>
        public SyndicationException()
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SyndicationException"/> class with 
        /// a specified error message.
        /// </summary>
        /// <param name="message">A message that describes the error.</param>
        public SyndicationException(string message) : 
            base(message)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SyndicationException"/> class with a specified 
        /// error message and a reference to the inner exception that is the cause of this exception.
        /// </summary>
        /// <param name="message">The error message that explains the reason for the exception.</param>
        /// <param name="innerException">
        /// The exception that is the cause of the current exception. If the <paramref name="innerException"/> 
        /// parameter is not a null reference, the current exception is raised in a catch block that 
        /// handles the inner exception.
        /// </param>
        public SyndicationException(string message, Exception innerException) : 
            base(message, innerException)
        {
        }
    }
}
